An Application Programming Interface (API) is a set of subroutine definitions, protocols, and tools for building application software. In general terms, it is a set of clearly defined methods of communication between various software components. A good API makes it easier to develop a computer program by providing all the building blocks, which are then put together by the programmer. An API may be for a web-based system, operating system, database system, computer hardware or software library. An API specification can take many forms, but often includes specifications for routines, data structures, object classes, variables or remote calls. Watson Language Translator REST API, POSIX, Microsoft Windows API, the C++ Standard Template Library and Java APIs are examples of different forms of APIs. Documentation for the API is usually provided to facilitate usage.
A web API may have a plurality of endpoints. A single endpoint may have multiple free parameters of many potential values for different use-cases. Understanding the intention of the user (“intent”)—what they are trying to accomplish—provides an opportunity to tailor the API to the specific use by identifying a proper endpoint and binding some of the parameters to fixed values.
One intent may be implemented using a variety of the APIs. Tailoring all those APIs to this intent makes them look similar to a user. It allows for performing evaluation of those APIs towards the intent and its fulfillment context and enables users to access multiple APIs similarly and use each of them in the context where it performs the best.